package br.org.fatec.inter.data;

import br.org.fatec.inter.model.Cliente;
import br.org.fatec.inter.util.DBManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author Kennedy
 */
public class ClienteDAO extends Conexao {

    /**
     * O método serve para cadastrar um Cliente na base de dados.
     *
     * @param cliente Um objeto do tipo Cliente para ser cadastrado.
     * @return Retorna <b>True</b> se o Cliente foi cadastrado com sucesso, do
     * contrario retorna <b>False</b>
     */
    public boolean inserirCliente(Cliente cliente) throws SQLException {
        String sql = "insert into cliente(tipo, nome, cpf_cnpj, telefone, emai, endereco)"
                + " values(?,?,?,?,?,?)";
        return DBManager.executarQuery(getConexao(), sql, String.valueOf(cliente.getTipo()), cliente.getNome(), cliente.getCpf_cnpj(), cliente.getTelefone(), cliente.getEmail(), cliente.getEndereco());
    }

    /**
     * O metodo serve para remover um cliente na base de dados.
     *
     * @param cliente Um objeto do tipo Cliente para ser removido.
     * @return Retorna <b>True</b> se o Cliente foi removido com sucesso, do
     * contrario retorna <b>False</b>
     */
    public boolean removerCliente(Cliente cliente) throws SQLException {
        String sql = "delete from cliente where id = ?";
        return DBManager.executarQuery(getConexao(), sql, String.valueOf(cliente.getId()));
    }

    /**
     * O metodo serve para remover um cliente na base de dados.
     *
     * @param id Um int representando a identificação do cliente.
     * @return Retorna <b>True</b> se o Cliente foi removido com sucesso, do
     * contrario retorna <b>False</b>
     */
    public boolean removerCliente(int id) throws SQLException {
        String sql = "delete from cliente where id = ?";
        return DBManager.executarQuery(getConexao(), sql, String.valueOf(id));
    }

    public Cliente pesquisarCliente(String campo, String valor) throws SQLException {
        String sql = "select * from cliente where ? = ?";
        PreparedStatement ps = getConexao().prepareStatement(sql);
        ps.setString(1, campo);
        ps.setString(2, valor);
        ResultSet rs = ps.executeQuery();
        if (rs.next()) {
            Cliente cliente = new Cliente();
            cliente.setNome(rs.getString("nome"));
            //TODO terminar essa merda ¬¬
            //Igual para todos os outros xD
            return cliente;
        } else {
            return null;
        }
    }

    public ArrayList<Cliente> pesquisarClientes(String nome) {
        return null;
    }
}
